// components/good/harve-good/index.js
import countDown from '../../../utils/countDown'

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    good: {
      type: Object
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    countDown: '',
    timer: null
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onHarve() {
      const { good } = this.properties
      if(Date.now() < good.harve_time) {
        wx.showToast({
          title: '还未到收取时间',
          icon: 'error'
        })
      } else if(Date.now() >= good.harve_time && Date.now() < good.out_time) {
        wx.showToast({
          title: '收取成功',
        })
        this.triggerEvent('harve', {...good, type: 'harve'})
      } else if(Date.now() >= good.out_time) {
        wx.showToast({
          title: '产品已过期，下次早点！',
          icon: 'none'
        })
        this.triggerEvent('disable', {...good, type: 'disable'})
      }
    },
    setCountDown(){
      if(this.data.timer) { return }

      const {good} = this.properties
      const timer = setInterval(() => {
        if(Date.now() < good.harve_time){
          const countDownArr = countDown(good.harve_time - Date.now())
          this.setData({
            countDown: countDownArr.join(':')
          })
        }else if(Date.now() >= good.harve_time && Date.now() < good.out_time) {
          const countDownArr = countDown(good.out_time - Date.now())
          this.setData({
            countDown: countDownArr.join(':')
          })
        } else if(Date.now() > good.out_time) {
          // 告诉父组件当前的用户商品过期了
          this.triggerEvent('timeout')
          clearInterval(this.data.timer)
          this.setData({
            countDown: ''
          })
        }
      }, 1000);

      this.setData({
        timer
      })
    },
    clearCountDown() {
      clearInterval(this.data.timer)
      this.setData({
        timer: null
      })
    }
  },
  // 小程序中的组件的生命周期钩子函数
  lifetimes: {   // 生命周期
    attached() {    // 类似于 beforeMounted 只触发1次
      console.log('attached')
      this.setCountDown()
    },
    detached() {  // 只触发1次
      console.log('detached')
      this.clearCountDown()
    }
  },
  pageLifetimes: {
    show() {   // 可以触发多次
      console.log('页面显示')
      this.setCountDown()
    },
    hide() {  // 可以触发多次
      console.log('页面隐藏')
      this.clearCountDown()
    }
  }
})
